package br.com.locanet.dao.database.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.PersistenceException;

import br.com.locanet.bean.impl.Cliente;

public class ClienteDAO extends PessoaDAO<Cliente> {

	@Override
	protected Object[] doPrepareQuery(StringBuffer query, Cliente entity) {
		List<Object> values = new ArrayList<Object>();
		
		for (Object obj : super.doPrepareQuery(query, entity)){
			values.add(obj);
		}
		
		if (entity.getCpf()!=null){
			query.append(" AND oEntidade.cpf LIKE ? ");
			values.add("%"+entity.getCpf()+"%");
		}
		if (entity.getEndereco()!=null){
			query.append(" AND oEntidade.endereco LIKE ? ");
			values.add("%"+entity.getEndereco()+"%");
		}
		if (entity.getCep()!=null){
			query.append(" AND oEntidade.cep LIKE ? ");
			values.add("%"+entity.getCep()+"%");
		}
		if (entity.getTelefone_res()!=null){
			query.append(" AND oEntidade.telefone_res = ? ");
			values.add(entity.getTelefone_res());
		}
		if (entity.getTelefone_cel()!=null){
			query.append(" AND oEntidade.telefone_cel = ? ");
			values.add(entity.getTelefone_cel());
		}
		
		return values.toArray();
	}
	
	@Override
	protected Cliente doMerge(Cliente entity) throws PersistenceException {
		Cliente oldEntity = super.doMerge(entity);

		if (entity.getCpf()!=null)
			oldEntity.setCpf(entity.getCpf());
		if (entity.getCep()!=null)
			oldEntity.setCep(entity.getCep());
		if (entity.getEndereco()!=null)
			oldEntity.setEndereco(entity.getEndereco());
		if (entity.getTelefone_cel()!=null)
			oldEntity.setTelefone_cel(entity.getTelefone_cel());
		if (entity.getTelefone_res()!=null)
			oldEntity.setTelefone_res(entity.getTelefone_res());
			
		return oldEntity;
	}
	
}
